/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import Dao.CategoriaDao;
import Dao.ExemplarDao;
import Dao.LivroDao;
import com.sun.rmi.rmid.ExecOptionPermission;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.persistence.RollbackException;
import pojo.Categoria;
import pojo.Exemplar;

/**
 *
 * @author jonatan
 */
@ManagedBean(name="beanExemplar")
@SessionScoped
public class ExemplarBean {
        
    private ExemplarDao exemplardao = new ExemplarDao();
    private Exemplar exemplar = new Exemplar();
    private List<Exemplar> listaexemplar = new ArrayList<Exemplar>();
    private Exemplar excluido;
    private Long idLivro;

    public Long getIdLivro() {
        return idLivro;
    }

    public void setIdLivro(Long idLivro) {
        this.idLivro = idLivro;
    }
    
    public ExemplarBean() {
    }

    public ExemplarDao getExemplardao() {
        return exemplardao;
    }

    public Exemplar getExemplar() {
        return exemplar;
    }

    public List<Exemplar> getListaexemplar() {
        return listaexemplar;
    }

    public Exemplar getExcluido() {
        return excluido;
    }

    public void setExemplardao(ExemplarDao exemplardao) {
        this.exemplardao = exemplardao;
    }

    public void setExemplar(Exemplar exemplar) {
        this.exemplar = exemplar;
    }

    public void setListaexemplar(List<Exemplar> listaexemplar) {
        this.listaexemplar = listaexemplar;
    }

    public void setExcluido(Exemplar excluido) {
        this.excluido = excluido;
    }
    
    public String salvar() {
        LivroDao daolivro = new LivroDao();
        exemplar.setLivro(daolivro.Buscar(idLivro));
        exemplardao.Gravar(exemplar);
        exemplar = new Exemplar();
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CONFIRMAÇÃO",
                "Cadastrado realizado com sucesso!"));
        return "CadastroExemplar.xhtml";
    }
    
    public List<Exemplar> listaExemplar() {
        return listaexemplar = exemplardao .Listar(Exemplar.class);
    }
    
    public String removerexemplar(Exemplar obj) {
        try {
            exemplardao.Remover(obj);
            cancelar();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
                    "CONFIRMAÇÃO", "Exemplar removido com sucesso!"));
        } catch (RollbackException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,
                    "ATENÇÃO", "Exemplar já esta em uso, não pode ser removido."));
        }
        return "CadastroExemplar.xhtml";
    }
    public void parametroRemover(ActionEvent event) {
        UIComponent link = event.getComponent();
        UIParameter param = (UIParameter) link.findComponent("idParaRemover");
        excluido = (Exemplar) param.getValue();
    }
    
    public void remover() {
        removerexemplar(excluido);
        excluido = null;
    }

    public void alterar(Exemplar obj) {
        obj = exemplardao.Buscar(obj.getId());
        this.exemplar = obj;
    }

    public String cancelar() {
        exemplar = new Exemplar();
        return "CadastroExemplar.xhtml";
    }

    public String paginaCategoria() {
        return "CadastroExemplar.xhtml";
    }
    
}
